﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MinoSoft.sslpDataSetTableAdapters;

namespace MinoSoft
{
    public partial class FrmAgregarArticulo : Form
    {
        public FrmAgregarArticulo()
        {
            InitializeComponent();
        }

        private void FrmAgregarArticulo_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Escape)
            {
                this.Close();
            }
        }

        private void tsBtnGuardar_Click(object sender, EventArgs e)
        {
            try
            {
                if (datosValidos())
                {
                    ARTICULOSTableAdapter articulos = new ARTICULOSTableAdapter();
                    articulos.Insert(txtArticulo.Text, txtDescripcion.Text, int.Parse(txtProveedor.Text), decimal.Parse(txtPrecio.Text), 0);
                    this.Close();
                }
                else
                {
                    Dialogos.error("Verifique los datos ingresados");
                }
            }
            catch (Exception ex)
            {
                Dialogos.error(ex.Message);
                this.Close();
            }            
        }

        bool datosValidos()
        {
            txtArticulo_Validating(null, null);
            txtDescripcion_Validating(null, null);

            foreach (Control c in errorProvider.ContainerControl.Controls)
                if (errorProvider.GetError(c) != "")
                    return false;
            return true;
        }

        private void txtPrecio_KeyPress(object sender, KeyPressEventArgs e)
        {
            updateTextImporte(txtPrecio, e);
        }

        private void updateTextImporte(TextBox txtBox, KeyPressEventArgs e)
        {
            String text = txtBox.Text.Substring(0, txtBox.Text.Length);
            String aux = "";

            if (Char.IsNumber(e.KeyChar))
            {
                e.Handled = true;
                String str = new String(e.KeyChar, 1);

                aux = text.Substring(0, text.Length - 3);
                aux += text.Substring(text.Length - 2, 1);
                aux += "," + text.Substring(text.Length - 1, 1) + str;

                Double impo = Double.Parse(aux);

                txtBox.Text = "";
                txtBox.Text = String.Format("{0:0.00}", impo);

                txtBox.SelectionStart = txtBox.Text.Length;
            }
            else if (e.KeyChar == '\b')
            {
                e.Handled = true;

                if (text.Length < 4)
                {
                    aux = "0,00";
                }
                else
                {
                    aux = text.Substring(0, text.Length - 4);
                    aux += ",";
                    aux += text.Substring(text.Length - 4, 1);
                    aux += text.Substring(text.Length - 2, 1);
                }

                Double impo = Double.Parse(aux);
                txtBox.Text = "";

                if (impo.ToString().Equals("0"))
                    txtBox.Text = "0,00";
                else
                    txtBox.Text = String.Format("{0:0.00}", impo);

                txtBox.SelectionStart = txtBox.Text.Length;
            }
            else
                e.Handled = true;

        }

        private void txtArticulo_Validating(object sender, CancelEventArgs e)
        {
            if (String.IsNullOrEmpty(txtArticulo.Text))
                errorProvider.SetError(txtArticulo, "Por favor ingrese un codigo para identificar el articulo");
            else
                errorProvider.SetError(txtArticulo, "");

            return;
        }

        private void txtDescripcion_Validating(object sender, CancelEventArgs e)
        {
            if (String.IsNullOrEmpty(txtDescripcion.Text))
                errorProvider.SetError(txtDescripcion, "Por favor ingrese una descripcion para el articulo");
            else
                errorProvider.SetError(txtDescripcion, "");

            return;
        }

        private void tsBtnAgregar_Click(object sender, EventArgs e)
        {
            try
            {
                if (datosValidos())
                {
                    ARTICULOSTableAdapter articulos = new ARTICULOSTableAdapter();
                    articulos.Insert(txtArticulo.Text, txtDescripcion.Text, int.Parse(txtProveedor.Text), decimal.Parse(txtPrecio.Text), 0);
                    limpiarCampos();
                }
                else
                {
                    Dialogos.error("Verifique los datos ingresados");
                }
            }
            catch (Exception ex)
            {
                Dialogos.error(ex.Message);
                this.Close();
            }
        }

        private void limpiarCampos()
        {
            txtArticulo.Text = "";
            txtDescripcion.Text = "";
            txtProveedor.Text = "";
            txtPrecio.Text = "0.00";
        }       
    }
}
